Ce week-end mon « nas » est mort.
Il faut recréer et moderniser la mesure en temps réel de la consommation énergétique de toute la maison.
J’ai (toujours) une raspberry sus la main… c’est parti !
Dans cet article, je vais présenter comment récupérer les données xml issues d’un boîtier currentcost.
Installation Raspberry Pi OS (previously called Raspbian)
tout ce passe ici : https://www.raspberrypi.org/downloads/raspberry-pi-os/
installation python pour prise en charge usb pl2303 du currentcost
sudo apt-get install python-serial
Lecture trame xml usb pl2303
Créer un programme python : currentcost.py
import serial cc128 = serial.Serial("/dev/ttyUSB0", 57600, timeout=6) cc128xml = cc128.readlines(6) print cc128xml
Le lancer avec : $ python currentcost.py Ce qui nous donne :
C’est la preuve que l’usb est bien reconnue. Nous avons ici la trame XML envoyée toutes les 6 secondes…
Ajouter python pip
sudo apt-get install python-pip
Mysql / MariaDb
puis le connecteur mysql
python -m pip install mysql-connector-python
Rrdtool
Installation de rrdtool pour la réalisation de petits graphiques
sudo apt-get install librrd-dev libpython-dev sudo pip install rrdtool
Sources : https://pythonhosted.org/rrdtool/install.html#installation
Puis création des fichiers rrdtool pour stocker les données
$ rrdtool create powertemp.rrd --step 5 \ DS:Power:GAUGE:180:0:U \ DS:Temperature:GAUGE:180:U:U \ RRA:AVERAGE:0.5:1:3200 \ RRA:AVERAGE:0.5:6:3200 \ RRA:AVERAGE:0.5:36:3200 \ RRA:AVERAGE:0.5:144:3200 \ RRA:AVERAGE:0.5:1008:3200 \ RRA:AVERAGE:0.5:4320:3200 \ RRA:AVERAGE:0.5:52560:3200 \ RRA:MIN:0.5:1:3200 \ RRA:MIN:0.5:6:3200 \ RRA:MIN:0.5:36:3200 \ RRA:MIN:0.5:144:3200 \ RRA:MIN:0.5:1008:3200 \ RRA:MIN:0.5:4320:3200 \ RRA:MIN:0.5:52560:3200 \ RRA:MAX:0.5:1:3200 \ RRA:MAX:0.5:6:3200 \ RRA:MAX:0.5:36:3200 \ RRA:MAX:0.5:144:3200 \ RRA:MAX:0.5:1008:3200 \ RRA:MAX:0.5:4320:3200 \ RRA:MAX:0.5:52560:3200
Plus d’infos : http://www.jibble.org/currentcost/
Pour les autres sondes, j’enleverai la ligne qui stocke la t°.
En python la ligne qui permet d’inserer une donnée dans un fichier rrdtool est :
ret = rrdtool.update('currentcost/fichiers_rrd/powertemp.rrd','N:' + str(big_total) + ':' + str(tmper));
A adapter en fonction de vos besoins…
La génération d’un graphique par rrdtool donne déjà de bon résultats :
En bossant un peu la doc de rrdtool :
Reste à refaire toute la mise en page des données…
A suivre…